我想知道如何在Windows中将窗口停靠/捕捉到屏幕的一侧,最好使用直接的Win32API。我正在寻找的效果就像任务栏——一个在屏幕上有预留空间的窗口,因此最大化另一个窗口会使该窗口占据屏幕的其余部分,但让我的窗口保持在原位并可见。我知道各种IM客户端都这样做,但一直无法找到有关如何执行此操作的任何资源。也不确定它的适当名称是什么。编辑:“应用程序桌面工具栏”是用于查找相关信息的搜索词。 最佳答案 IIUYC您正在寻找一个应用程序栏(MS官方名称为“应用程序桌面工具栏”)。您确实可以使用WindowsAPI创建它们。
我想使用C#从Windows事件日志中删除一个事件。谁能指出我如何实现这一目标的正确方向? 最佳答案 简单:).但是删除看起来像从数组中删除项目,您需要复制所有数组,除了您需要删除的项目。有一个例子,如何“从日志中删除项目索引为非偶数的每个项目”。usingSystem;usingSystem.Collections;usingSystem.Diagnostics;usingSystem.Threading;classEventLogEntryCollection_Item{//////Printsall.//////Myevent
我有两个应用程序有两个不同的顶级窗口:App1--Window1App2--Window2现在,我正在App1中创建一个对话框Dlg1,我想将window2(App2)设置为父窗口。(那是因为我希望我的Dlg1位于Window2之上)。我通过将Window2设置为父级来创建对话框。有效。但这是正确的方法吗?跨进程设置父项是否存在任何已知问题\限制?我检查了windows文档,发现的信息不多。 最佳答案 这或多或少是受支持的,但确实有一些限制。您需要注意这两个进程以同一用户身份运行,并且您没有会阻止这两个进程通信的安全或提升问题。其次
有没有办法将一个程序用作MDI子窗口。我正在考虑拥有一个主MDI父窗口,它可以有多个子窗口,其中一些将是自己的程序(.exe文件)。蒂姆 最佳答案 实际上有一种非常简单的方法可以做到这一点。首先,您需要在表单中添加一个面板。该面板将用于“托管”应用程序。接下来,您需要将“System.Runtime.InteropServices”和“System.Diagnostics”命名空间添加到您的命名空间中:锐化usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;现在,我
嘿,我正在使用WindowsHook,我在系统范围内安装了鼠标Hook,并且运行良好。现在有一个问题,我需要获取鼠标被点击的窗口句柄。我该怎么做?鼠标Hook事件是否向我们传递了该信息? 最佳答案 由于您使用的是WH_MOUSE_LL,因此您正在创建一个低级鼠标Hook,它实际上接收到一个指向MSLLHOOKSTRUCT的指针。没有hwnd成员。您需要使用WH_MOUSE设置一个普通的鼠标钩子(Hook);然后你会得到一个指向MOUSEHOOKSTRUCT的指针你期待的.. 关于c++-
我一直在编写一些代码来抓取窗口的屏幕(在Windows中)。代码工作正常,但是在屏幕抓取之前,我必须将窗口带到我想要捕获的前面并强制重绘。我用InvalidateRect强制重绘,然后我必须从消息循环中提取一些消息以便WM_PAINT得到处理。这显然有点蹩脚,因为我不知道要发送多少消息。我尝试将RedrawWindow与RDW_ALLCHILDREN一起使用,但是我从中抓取屏幕的应用程序是一个MDI应用程序,似乎并没有重绘它的所有子项。所以我的问题是,有没有更好的方法在屏幕抓取之前重绘窗口?干杯丰富 最佳答案 由于您没有提到您使用的
SetWindowPosition的第二个参数是hWndInsertAfter,表示在后面。如何将一个窗口放在另一个窗口(上方)的前面? 最佳答案 如何再次调用SetWindowPos,交换hwnd参数(因此您的原始窗口现在是hWndInsertAfter,而初始hWndInsertAfter现在是您要移动的hWnd),并传入SWP_NOMOVE标志?编辑:如果Z顺序中的确切位置无关紧要,而您只想让它在前面,请不要忘记SetForegroundWindow。 关于c++-我可以使用Set
对于我的一个项目,我需要创建一个函数,当用户单击窗口(屏幕上显示的任何窗口,以及该窗口内的任何位置)时,该函数将返回一个窗口的句柄。我知道可以使用全局Hook,但我认为必须有一种更简单的方法,无需使用任何DLL注入(inject)。事实上,我可以在激活窗口时拦截鼠标左键单击或拦截。我可以在没有任何DLL注入(inject)的情况下使用这两种解决方案中的一种吗? 最佳答案 你可以使用LowLevelMouseProchook拦截点击,然后使用WindowFromPoint来确定窗口。(我还没有真正尝试过这个。)
我的应用程序类似于Spy++应用程序:我希望能够自动检索事件窗口(任何应用程序)及其子项的所有不同控件,并且对于每个控件,我想知道类型、名称、和值(标题或文本)。我正在使用C#windows应用程序。迭代前台窗口及其子项(等等)的所有控件并检索名称、类型和值的解决方案是什么? 最佳答案 要枚举顶级窗口,请使用EnumWindows(),要让他们的子窗口使用EnumChildWindows().使用枚举中的HWND,可以通过GetWindowText()读取带有标题栏值的顶级窗口,对于其他窗口,您可以使用WM_GETTEXT消息,或者
我正在处理一个停靠项目,在该项目中我需要我的表单将自身停靠到不属于我的应用程序的窗口中。我没有问题检测窗口的位置,但是我不知道如何拦截窗口的移动事件。有谁知道如何拦截窗口移动事件? 最佳答案 也许this帖子会给你一些线索。另一种方法(但不是很好)是让计时器每500毫秒触发一次,每次检查窗口位置并与前一个进行比较。然后,如果不同,请相应地调整您的窗口。 关于c#-在C#中拦截窗口移动,我们在StackOverflow上找到一个类似的问题: https://st